using System;
using System.Collections.Generic;
using System.Text;
using WebService.BusinessEntities;
using WebService.DataAccess;

namespace WebService.BusinessLogic.Managers
{
    /// <summary>
    /// Klasa dostarczajaca funkcjonalnosci w obszarze zarzadzania
    /// danymi uzytkownikow kasyna (dodaj/edytuj/usun/wyswietl...)
    /// </summary>
    public class CasinoUsersManager
    {
        private String database;
        /// <summary>
        /// Connection-string do bazy danych
        /// </summary>
        public String Database
        {
            get { return database; }
            set { database = value; }
        }
	    
        /// <summary>
        /// Konstruktor parametrowy managera
        /// </summary>
        /// <param name="database">Connection-string do bazy danych</param>
        public CasinoUsersManager(String database)
        {
            Database = database;
        }

        /// <summary>
        /// Funkcja dodaje nowego uzytkownika do systemu kasyna
        /// </summary>
        /// <param name="user">Nowy uzytkownika</param>
        public void InsertCasinoUser(CasinoUser user)
        {
            CasinoUserRepository rep = new CasinoUserRepository(database);
            rep.Add(user);
        }

        /// <summary>
        /// Funkcja pobiera danego uzytkownika
        /// </summary>
        /// <param name="user">Uzytkownik</param>
        /// <returns>Uzytkownik</returns>
        public CasinoUser GetCasinoUser(Int32 user_id)
        {
            CasinoUserRepository rep = new CasinoUserRepository(database);
            CasinoUser user2 = new CasinoUser();
            user2 = rep.GetCasinoUser(user_id);
            return user2;
        }

        /// <summary>
        /// Funkcja pobiera wszystkich uzytkownikow kasya
        /// </summary>
        /// <returns>Lista uzytkownikow</returns>
        public List<CasinoUser> GetAllCasinoUsers()
        {
            List<CasinoUser> users = new List<CasinoUser>();
            CasinoUserRepository rep = new CasinoUserRepository(database);
            users = rep.GetAllCasinoUsers();
            return users;
        }

        /// <summary>
        /// Funkcja edytuje dane uzytkownika
        /// </summary>
        /// <param name="user">Uzytkownik</param>
        public void UpdateCasinoUser(CasinoUser user)
        {
            CasinoUserRepository rep = new CasinoUserRepository(database);
            rep.Save(user);
        }

        /// <summary>
        /// Funkcja usuwa uzytkownika kasyna
        /// </summary>
        /// <param name="user">Uzytkownik</param>
        public void DeleteCasinoUser(CasinoUser user)
        {
            CasinoUserRepository rep = new CasinoUserRepository(database);
            rep.Remove(user.user_id);
        }

        public CasinoUser GetCasinoUserByLogin(String login)
        {
            CasinoUserRepository rep = new CasinoUserRepository(database);
            return rep.GET_CASINO_USER_BY_LOGIN_PROC(login);
        }


        public CASINO_USER_MONEY GetUserMoney(int IdUser)
        {
            CASINO_USER_MONEYRepository rep = new CASINO_USER_MONEYRepository(database);
            return rep.GetPlayerMoney(IdUser);
        }

        public void UpdateUserMoney(CASINO_USER_MONEY money)
        {
            CASINO_USER_MONEYRepository rep = new CASINO_USER_MONEYRepository(database);
            rep.Save(money);
        }
    }
}
